[MASTER]

# A comma-separated list of package or module names from where C extensions may
# be loaded. Extensions are loading into the active Python interpreter and may
# run arbitrary code.
extension-pkg-allow-list=numpy,pydantic

# Files or directories to be skipped. They should be base names, not paths.
ignore=CVS,snapshots

# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the
# number of processors available to use.
jobs=0

# List of plugins (as comma separated values of python module names) to load,
# usually to register additional checkers.
load-plugins=


[MESSAGES CONTROL]
# Disable the message, report, category or checker with the given id(s). You
# can either give multiple identifiers separated by comma (,) or put this
# option multiple times (only on the command line, not in the configuration
# file where it should appear only once). You can also use "--disable=all" to
# disable everything first and then reenable specific checks. For example, if
# you want to run only the similarities checker, you can use "--disable=all
# --enable=similarities". If you want to run only the classes checker, but have
# no Warning level messages displayed, use "--disable=all --enable=classes
# --disable=W".
disable=raw-checker-failed,
        bad-inline-option,
        locally-disabled,
        file-ignored,
        suppressed-message,
        useless-suppression,
        deprecated-pragma,
        use-symbolic-message-instead,
        missing-module-docstring,
        import-error,
        unspecified-encoding,
        # Using f-strings in logging, even though it's a hair slower,
        # improves readability.
        logging-fstring-interpolation,
        # It's rare for developers to forget to add a "self" or "cls" argument and
        # when the first arg of a method is anything other than "self" or "cls" it's
        # almost always for a good reason. Therefore, the "no-self-argument" is
        # erroneously raised 99% of the time.
        no-self-argument,
        # This is handled by `black` formatter. `pylint` shouldn't have
        # to check for it.
        trailing-comma-tuple,
        # Disable the entire "format" group of checks.
        # Note that `line-too-long` is re-enabled below.
        format,

# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option
# multiple time (only on the command line, not in the configuration file where
# it should appear only once). See also the "--disable" option for examples.
enable=c-extension-no-member,
       line-too-long,

[LOGGING]

# The type of string formatting that logging methods do. `old` means using %
# formatting, `new` is for `{}` formatting.
logging-format-style=new

# Logging modules to check that the string format arguments are in logging
# function parameter format.
logging-modules=logging,loguru

[MISCELLANEOUS]

# List of note tags to take in consideration, separated by a comma.
notes=FIXME,
      XXX,
      TODO

# Regular expression of note tags to take in consideration.
#notes-rgx=


[FORMAT]

# Regexp for a line that is allowed to be longer than the limit.
ignore-long-lines=^\s*(# )?<?https?://\S+>?$

# Maximum number of characters on a single line.
max-line-length=150

[BASIC]

# Bad variable names which should always be refused, separated by a comma.
bad-names=i,
          j,
          k,

# Bad variable names regexes, separated by a comma. If names match any regex,
# they will always be refused
bad-names-rgxs=

# Good variable names which should always be accepted, separated by a comma.
good-names=f,fp,T,x,y

# Good variable names regexes, separated by a comma. If names match any regex,
# they will always be accepted
good-names-rgxs=

# Include a hint for the correct naming format with invalid-name.
include-naming-hint=yes

[CLASSES]

# List of valid names for the first argument in a metaclass class method.
valid-metaclass-classmethod-first-arg=mcs


[DESIGN]

# Minimum number of public methods for a class (see R0903).
# Set to zero so data classes without methods do not raise a pylint error.
min-public-methods=0


[EXCEPTIONS]

# Exceptions that will emit a warning when being caught. Defaults to
# "BaseException, Exception".
overgeneral-exceptions=builtins.BaseException,
                       builtins.Exception
